iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Modern Web

自己工具,自己 React - React學習系列 第 20

【D20】 小工具:身分證製造機(part 2)-身分證檢查功能

  • 分享至 

  • xImage
  •  

已經瞭解規則,接著就開始製作身分證製造機的作業。在開始前,先做個檢查機制,檢查我們的身分證號碼是否正確,也就是 TDD 的精神,這樣才能確認我們的身分證製造機產出的身分證是正確的。

建立功能的 js

首先建立一個 JavaScript,用來檢查身份證,這邊取名為 IDCreater.js。裡面存放著判斷各種的功能,這些功能有檢查首碼、第二碼和最後的檢查碼。

基本檢查

checkLength() 用來檢查長度,檢查長度是否十碼(),並且 checkNumber() 檢查後面的九碼是否為數字。

export function checkBasic(code) {
  let result =
    checkLength(code) &&
    checkDigit(code) &&
    checkGender(parseInt(code.substring(1, 2)));

  console.log(`check basic: ${result}`);
  return result;
}
function checkLength(code) {
  let r = false;
  if (length(code) === 10) r = true;

  console.log("check legnth: " + r);

  return r;
}
function checkDigit(code) {
  const testStr = code.substring(1);
  for (let i = 0; i < testStr.length; i++) {
    if (isNaN(testStr.charAt(i))) {
      console.log(
        `Check digit false. ${testStr.charAt(i)} is ${!isNaN(
          testStr.charAt(i)
        )}`
      );

      return false;
    }
  }

  return true;
}

檢查首碼

checkPlace() 用來檢查區域碼,這個區域碼是否在我們的清單中。

function checkPlace(code) {
  const cityDic = {
    A: "10", //臺北市
    B: "11", //臺中市
    C: "12", //基隆市
    D: "13", //臺南市
    E: "14", //高雄市
    F: "15", //新北市
    G: "16", //宜蘭縣
    H: "17", //桃園市
    I: "34", //嘉義市
    J: "18", //新竹縣
    K: "19", //苗栗縣
    M: "21", //南投縣
    N: "22", //彰化縣
    O: "35", //新竹市
    P: "23", //雲林縣
    Q: "24", //嘉義縣
    T: "27", //屏東縣
    U: "28", //花蓮縣
    V: "29", //臺東縣
    W: "32", //金門縣
    X: "30", //澎湖縣
    Z: "33", //連江縣
    L: "20", //臺中縣
    R: "25", //臺南縣
    S: "26", //高雄縣
    Y: "31", //陽明山管理局
  };

  if (code in cityDic) {
    console.log("check place: " + code + "=" + cityDic[code]);

    return cityDic[code];
  }
  console.log("check place(error): " + code + "=0");

  return 0;
}

檢查第二碼

checkGender() 用來檢查性別碼,檢查否為:1、2、8、9。

function checkGender(code) {
  const genderArr = [
    1, //男
    2, //女
    8, //外來人口-男
    9, //外來人口-女
  ];

  if (genderArr.includes(code)) {
    console.log("check Gender: true");
    return true;
  }
  console.log("check Gender: false");

  return false;
}

檢查第十碼

checkCkDigit() 用來檢查驗證碼,這邊先跳過,留到下次再說,因為有點複雜。


後記

發現只要有驗證碼都會比較複雜,要花點時間處理!

所以就留到明天再解吧~


上一篇
【D19】 小工具:身分證製造機(part 1)-規則
下一篇
【D21】 小工具:身分證製造機(part 3)-檢查驗證碼
系列文
自己工具,自己 React - React學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言